﻿Namespace Negocios

    Public Class PessoaFisica

#Region "Variáveis"

        Private dcDados As Dados.dcDadosDataContext

#End Region

#Region "Propriedades"

        Friend Property Contexto() As Dados.dcDadosDataContext
            Get
                If dcDados Is Nothing Then dcDados = New Dados.dcDadosDataContext
                Return dcDados
            End Get
            Set(ByVal value As Dados.dcDadosDataContext)
                dcDados = value
            End Set
        End Property

#End Region

#Region "Construtores"

#End Region

#Region "Funções Privadas"

        Private Function ConverterDadosEmObjeto(ByVal objPessoaFisicaDados As Dados.PessoaFisica) As Objetos.PessoaFisica

            If objPessoaFisicaDados Is Nothing Then Return Nothing

            Dim objPessoaFisica As New Objetos.PessoaFisica

            With objPessoaFisica
                .CodigoPessoa = Convert.ToInt32(objPessoaFisicaDados.CodigoPessoa)
                .DataNascimento = Convert.ToDateTime(objPessoaFisica.DataNascimento)
                .NomeCompleto = Convert.ToString(objPessoaFisica.NomeCompleto)
                .Sexo = Convert.ToString(objPessoaFisica.Sexo)

            End With

            Return objPessoaFisica

        End Function

        Private Function ConverterDadosEmObjeto(ByVal listPessoaFisicaDados As List(Of Dados.PessoaFisica)) As List(Of Objetos.PessoaFisica)

            If listPessoaFisicaDados Is Nothing Then Return Nothing

            Dim listPessoaFisica As New List(Of Objetos.PessoaFisica)

            For Each objetoPessoaFisicaDados In listPessoaFisicaDados
                listPessoaFisica.Add(ConverterDadosEmObjeto(objetoPessoaFisicaDados))
            Next

            Return listPessoaFisica

        End Function

        Private Function RetornarPessoaFisica() As IQueryable(Of Dados.PessoaFisica)

            Return (From PF In Contexto.PessoaFisicas)

        End Function

        Private Function RetornarPessoaFisica(ByVal intCodigoPessoa As Integer) As IQueryable(Of Dados.PessoaFisica)

            Return (From PF In RetornarPessoaFisica() Where PF.CodigoPessoa.Equals(intCodigoPessoa))

        End Function

#End Region

#Region "Friend"

#End Region

#Region "Públicas"

        Public Function EncontrarPorCodigo(ByVal intCodigoPessoa As Integer) As Objetos.PessoaFisica

            Try

                Dim objPessoaFisica As Dados.PessoaFisica = RetornarPessoaFisica(intCodigoPessoa).SingleOrDefault

                Return ConverterDadosEmObjeto(objPessoaFisica)

            Catch ex As Exception
                Throw
            End Try

        End Function

#End Region

    End Class

End Namespace